package com.emeraldparser.symbol;

public interface SymbolClassVisitor<I, O> {

	public O visitAlternationSymbolClass(AlternationSymbolClass alternationSymbolClass, I input);

	public O visitCharacterRangeSymbolClass(CharacterRangeSymbolClass characterRangeSymbolClass, I input);

	public O visitCharacterSymbolClass(CharacterSymbolClass characterSymbolClass, I input);

	public O visitCharSequenceSymbolClass(CharSequenceSymbolClass charSequenceSymbolClass, I input);

	public O visitConcatenationSymbolClass(ConcatenationSymbolClass concatenationSymbolClass, I input);

	public O visitConjunctionSymbolClass(ConjunctionSymbolClass conjunctionSymbolClass, I input);

	public O visitEndOfInputSymbolClass(EndOfInputSymbolClass endOfInputSymbolClass, I input);

	public O visitNamedSymbolClass(NamedSymbolClass namedSymbolClass, I input);

	public O visitNegationSymbolClass(NegationSymbolClass negationSymbolClass, I input);

	public O visitOptionalSymbolClass(OptionalSymbolClass optionalSymbolClass, I input);

	public O visitRepetitionSymbolClass(RepetitionSymbolClass repetitionSymbolClass, I input);

	public O visitStartOfInputSymbolClass(StartOfInputSymbolClass startOfInputSymbolClass, I input);

}
